/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package winda;

import java.util.LinkedList;

/**
 *
 * @author camil
 */
public class SzybWindy {

    private Winda winda;
    private PanelPiętra[] pietra;
    private LinkedList<Integer> wybranePiętra;

    /**
     *
     * @param iloscPięter w szybie windy
     */
    public SzybWindy(int iloscPięter, int ładownośćWindy) {
        this.winda = new Winda(this, ładownośćWindy);
        this.pietra = new PanelPiętra[iloscPięter];
        if (this.pietra.length < 2) {
            this.pietra[0] = new PanelPiętra(this, false, false);
        } else {
            this.pietra[0] = new PanelPiętra(this, true, false);
            this.pietra[this.pietra.length - 1] = new PanelPiętra(this, false, true);
            for (int i = this.pietra.length - 2; i > 0; i--) {
                this.pietra[i] = new PanelPiętra(this, false, false);
            }
        }

        this.wybranePiętra = new LinkedList<Integer>();
    }

    protected void jedźNaPiętro(PanelPiętra naKtóre) {
        for (int i = 0; i < this.pietra.length - 1; i++) {
            if (this.pietra[i].equals(naKtóre)) {
                this.jedźNaPiętro(i);
                return;
            }
        }
    }

    protected void jedźNaPiętro(int piętro) {
        //wstaw do listy wybranePiętra w odpowiednie miejsce

        this.obsługaJazdy();
    }

    private void obsługaJazdy() {
        int gdzie = this.wybranePiętra.pollFirst();

        //info dla pięter i windy gdzie winda jedzie i gdzie aktualnie jest

        //zmienianie wyskokości

        this.winda.otwórzDrzwi();
        PanelPiętra pp = this.pietra[this.winda.pobierzAktualnePiętro()];
        if (this.wybranePiętra.get(0) > this.winda.pobierzAktualnePiętro()) {
            pp.jedźWGórę();
        } else {
            pp.jedźWDół();
        }
    }
    
    public double wagaWindy(){
        //bierze skąś wage windy
        return 0;
    }
}
